<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>何为数据代理</title>
</head>

<body>
    <!-- 
        数据代理：通过一个对象代理代理对另一个对象中属性的操作（读/写）

        Vue中的数据代理：通过vm对象来代理data对象中属性的操作

        Vue中数据代理的好处：更加方便操作data中的数据

        基本原理：
            通过Object.defineProperty()把data对象中所有属性添加到vm上
            为每一个添加到vm上的属性，都指定一个getter/setter
            在getter/setter内部去操作data中对应的属性
     -->

    <script>
        let obj = {
            x: 100
        };
        let obj2 = {
            y: 200
        };

        Object.defineProperty(obj2, 'x', {
            get() {
                return obj.x;
            },
            set(value) {
                obj.x = value;
            }
        })
    </script>
</body>

</html>